home *** CD-ROM | disk | FTP | other *** search
- 2 Z=0
- 5 ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- 6 ' * *
- 7 ' * A M A I L I N G L I S T P R O G R A M *
- 8 ' * *
- 9 ' * B Y J E R A L D R . M A L I N *
- 10 '* *
- 11 '* D E C E M B E R 1 , 1 9 8 1 *
- 12 '* *
- 13 '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- 14 CLS:PRINT STRING$(79,"*")
- 15 PRINT "*";STRING$(77,32);"*"
- 16 PRINT"* M A I L I N G L I S T M A N A G E R *"
- 17 PRINT "*";STRING$(77,32);"*"
- 18 PRINT"* B Y J E R A L D R . M A L I N , P . E . *"
- 19 PRINT "*";STRING$(77,32);"*"
- 20 PRINT STRING$(79,"*")
- 50 CLEAR 10000
- 52 WIDTH "LPT1:",132
- 55 OPEN"R",1,"DATA":OPEN"R",2,"POINT1"
- 60 FIELD 2,4 AS AA$
- 70 GET 2,1
- 80 DIM G(1000), I$(35)
- 90 FOR X=1 TO 35:I$(X)=CHR$(32):NEXT X
- 100 ' * * * M E N U * * *
- 105 CLS:PRINT " M A I L I N G L I S T A N D L A B E L M A N A G E R":PRINT
- 108 PRINT " M A I N M E N U":PRINT
- 110 PRINT " 1. ENTER FILE INFORMATION"
- 115 PRINT " 2. PRINT FILE"
- 120 PRINT" 3. PRINT LABELS"
- 125 PRINT" 4. PRINT BY SORT KEY"
- 130 PRINT" 5. DISPLAY FILE"
- 135 PRINT" 6. SEARCH AND EDIT"
- 140 PRINT" 7. DELETE ENTRIES"
- 145 PRINT" 8. START NEW DATA FILE"
- 150 PRINT" 9. SORT FILE"
- 155 PRINT" 0. CLOSE":PRINT
- 200 BB$=INKEY$:IF BB$="" GOTO 200
- 205 ON VAL(BB$) GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
- 210 CLOSE:CLS:PRINT "THE END":END
- 1000 CLS:GET 2,1:KY%=CVI(AA$):KY%=KY%+1:PR%=KY%:FIELD 1,25 AS T$,25 AS N$,25 AS A$,25 AS C$,15 AS P$,10 AS M$:GET 1,PR%
- 1005 PRINT"RECORD NUMBER = ";KY%
- 1006 PRINT" * *"
- 1008 LINE INPUT " TITLE LINE = ";T1$:LSET T$=T1$
- 1010 LINE INPUT " NAME = ";N1$:LSET N$=N1$
- 1015 LINE INPUT " ADDRESS = ";A1$:LSET A$=A1$
- 1020 LINE INPUT " CITY, ST ZIP = ";C1$:LSET C$=C1$
- 1025 LINE INPUT " PHONE = ";P1$:RSET P$=P1$:PRINT
- 1028 PRINT "USE 'M' FOR MEMBER, 'B' FOR BULLETIN, 'MS' FOR SUNDAY SCHOOL":PRINT
- 1030 LINE INPUT " SORT KEY = ";M1$:LSET M$=M1$
- 1035 PUT 1,PR%:LSET AA$=MKI$(KY%):PUT 2,1
- 1040 GOTO 100
- 2000 '* * * * PRINTER ROUTINE * * * *
- 2005 CLS:PRINT" * * * P R I N T E R R O U T I N E S * * * ":PRINT
- 2010 PRINT" 1. PRINT LISTING ON PRINTER BY ALPHABETIC NAME SORT":PRINT
- 2015 PRINT" 2. PRINT LISTING ON PRINTER BY ZIPCODE SORT":PRINT
- 2020 PRINT" 3. PRINT LISTING ON PRINTER BY FILE ORDER":PRINT
- 2025 PRINT" 4. ALPHABETIZED SORT KEY LISTING":PRINT
- 2028 PRINT" 5. RETURN TO MAIN MENU":PRINT
- 2030 BB$=INKEY$:IF BB$="" GOTO 2030
- 2035 ON VAL(BB$) GOTO 2100,2200,2300,4400,100
- 2040 GOTO 2000
- 2100 '* * * * PRINT LISTING ON PRINTER BY ALPHABETIC NAME SORT * * * *
- 2105 CLS:PRINT" PRINTING ALPHABETIC NAME SORT ON PRINTER"
- 2110 'GOSUB 15000
- 2115 GOSUB 14000
- 2120 OPEN "I",3,"INDEX1"
- 2125 X%=1
- 2130 IF EOF(3) GOTO 2150
- 2135 INPUT #3,G(X%)
- 2140 X%=X%+1
- 2145 GOTO 2130
- 2150 CLOSE 3
- 2155 FOR X=1 TO CVI(AA$)
- 2160 KY%=G(X)
- 2165 GOSUB 13000
- 2170 LPRINT TAB(0)X;:'* * CHR$(137) IS HORIZ. TAB FOR THE PRINTER
- 2175 LPRINT TAB(8)N$;
- 2180 LPRINT TAB(37)A$;
- 2185 LPRINT TAB(67)C$;
- 2190 LPRINT TAB(96)P$;
- 2192 LPRINT TAB(120)M$
- 2196 NEXT X
- 2197 LPRINT CHR$(27)"2";CHR$(18);:' * * SET TO 1/6 INCH, TURN OFF COMPRESSED MODE
- 2198 GOTO 100
- 2200 '* * * * ZIPCODE SORT ON PRINTER * * * *
- 2202 J$="SORT BY ZIPCODE"
- 2205 CLS:PRINT" PRINTING ZIPCODE SORT ON PRINTER"
- 2210 'GOSUB 15000
- 2213 GOSUB 14000
- 2215 OPEN "I",3,"INDEX2"
- 2220 X%=1
- 2225 IF EOF(3) THEN 2245
- 2230 INPUT #3,G(X%)
- 2235 X%=X%+1
- 2240 GOTO 2225
- 2245 CLOSE 3
- 2250 GOTO 2155
- 2300 '* * * * FILE LIST ON PRINTER * * * *
- 2302 J$="ENTRY ORDER"
- 2305 CLS:PRINT "PRINTING LISTING BY FILE ORDER"
- 2310 'GOSUB 15000
- 2315 GOSUB 14000
- 2320 FOR KY%=1 TO CVI(AA$)
- 2325 GOSUB 13000
- 2330 GOSUB 12000
- 2360 NEXT KY%
- 2365 GOTO 2197
- 3000 '* * * * L A B E L R O U T I N E * * * *
- 3005 CLS:PRINT" * * * L A B E L R O U T I N E S * * *":PRINT
- 3010 PRINT" 1. PRINT LABELS BY ALPHABETIC NAME SORT":PRINT
- 3015 PRINT" 2. PRINT LABELS BY ZIPCODE SORT":PRINT
- 3020 PRINT" 3. PRINT LABELS BY FILE ORDER":PRINT
- 3025 PRINT" 4. PRINT INDIVIDUAL LABELS":PRINT
- 3026 PRINT" 5. ZIPCODE ORDER BY SORT KEY":PRINT
- 3027 PRINT" 6. RETURN TO MAIN MENU":PRINT
- 3030 BB$=INKEY$:IF BB$="" GOTO 3030
- 3035 ON VAL(BB$) GOTO 3100,3200,3300,3400,4300,100
- 3040 GOTO 3000
- 3100 '* * * * PRINT LABELS BY ALPHABETIC NAME SORT * * * *
- 3105 CLS:PRINT "PRINTING LABELS BY ALPHABETIC NAME SORT"
- 3106 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
- 3110 'GOSUB 15000
- 3115 OPEN "I",3,"INDEX1"
- 3120 X%=1
- 3125 IF EOF(3) THEN 3145
- 3130 INPUT #3,G(X%)
- 3135 X%=X%+1
- 3140 GOTO 3125
- 3145 CLOSE 3
- 3150 LPRINT CHR$(27)"2"CHR$(18);:' * * SET 1/6 SPACING, TURN OFF COMPRESSED MODE
- 3155 FOR X=1 TO CVI(AA$)
- 3160 KY%=G(X)
- 3165 GOSUB 13000
- 3168 LPRINT T$
- 3169 GOSUB 19000
- 3170 LPRINT N3$;N2$
- 3175 LPRINT A$
- 3180 LPRINT C$
- 3185 LPRINT:LPRINT
- 3190 NEXT X
- 3195 GOTO 100
- 3200 '* * * * LABELS SORTED BY ZIPCODE * * * *
- 3205 CLS:PRINT"PRINTING LABELS SORTED BY ZIPCODE"
- 3206 PRINT:INPUT"LINE UP LABELS THEN HIT <ENTER>";L$
- 3210 'GOSUB 15000
- 3215 OPEN "I",3,"INDEX2"
- 3220 X%=1
- 3225 IF EOF(3) THEN 3245
- 3230 INPUT #3,G(X%)
- 3235 X%=X%+1
- 3240 GOTO 3225
- 3245 CLOSE 3
- 3250 GOTO 3150
- 3300 '* * * * PRINT LABELS BY FILE ORDER * * * *
- 3305 CLS:PRINT "PRINTING LABELS BY FILE ORDER"
- 3306 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
- 3310 'GOSUB 15000
- 3315 LPRINT CHR$(27)"2"CHR$(18);:'* * SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
- 3320 FOR KY%=1 TO CVI(AA$)
- 3325 GOSUB 13000
- 3328 LPRINT T$
- 3330 LPRINT N3$;N2$
- 3335 LPRINT A$
- 3340 LPRINT C$
- 3345 LPRINT:LPRINT
- 3350 NEXT KY%
- 3355 GOTO 100
- 3400 '* * * * PRINT INDIVIDUAL LABELS * * * *
- 3405 CLS:PRINT"PRINTING INDIVIDUAL LABELS"
- 3410 'GOSUB 15000
- 3415 LPRINT CHR$(27)"2"CHR$(18);:'* * SET 1/6 SPACING, TURN OFF COMPRESSED MODE
- 3420 INPUT "ENTER LISTING NUMBER OF LABEL TO BE PRINTED ";Y
- 3422 KY%=Y
- 3425 GOSUB 13000
- 3428 LPRINT T$
- 3429 GOSUB 19000
- 3430 LPRINT N3$;N2$
- 3435 LPRINT A$
- 3440 LPRINT C$
- 3445 LPRINT:LPRINT
- 3450 INPUT "ENTER ANOTHER LISTING NUMBER, OR 0 TO RETURN TO MENU";Y
- 3455 IF Y=0 THEN 100
- 3460 GOTO 3422
- 4000 '* * * * PRINT BY SELECTION * * * *
- 4005 CLS:PRINT" P R I N T B Y S O R T K E Y":PRINT
- 4010 PRINT" 1. PRINT LISTING BY SORT KEY":PRINT
- 4012 PRINT" 2. ALPHABETIZED SORT KEY LISTING":PRINT
- 4015 PRINT" 3. PRINT LABELS BY SORT KEY":PRINT
- 4020 PRINT" 4. PRINT LABELS BY ZIPCODE & SORT KEY":PRINT
- 4022 PRINT" 5. RETURN TO MAIN MENU":PRINT
- 4025 BB$=INKEY$:IF BB$=""GOTO 4025
- 4030 ON VAL(BB$) GOTO 4100,4400,4200,4300,100,4000,4000,4000,4000
- 4035 GOTO 4000
- 4100 '* * * * LISTING BY SORT CODE * * * *
- 4105 CLS:PRINT"PRINT LISTING BY SORT CODE":PRINT:PRINT
- 4108 'GOSUB 15000
- 4110 GOSUB 14000
- 4115 GET 2,1:INPUT "ENTER SELECTION PARAMETER ";S$
- 4120 FOR KY%=1 TO CVI(AA$)
- 4125 GOSUB 13000
- 4130 A=LEN(S$)
- 4135 IF LEFT$(M$,A)=S$ THEN GOSUB 12000
- 4140 NEXT KY%
- 4145 PRINT
- 4150 PRINT"END OF FILE"
- 4155 LPRINT CHR$(27)"2"CHR$(18);:'* * SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
- 4160 GOTO 100
- 4200 '* * * * LABELS BY SORT KEY * * * *
- 4205 CLS:PRINT"PRINTING LABELS BY SORT KEY":PRINT:PRINT
- 4210 LPRINT CHR$(27)"2"CHR$(18);:'* * SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
- 4215 GET 2,1:INPUT "ENTER SORT KEY PARAMETER ";S$
- 4220 FOR KY%=1 TO CVI(AA$)
- 4225 GOSUB 13000
- 4230 A=LEN(S$)
- 4235 IF LEFT$(M$,A)=S$ THEN GOSUB 12100
- 4240 NEXT KY%
- 4245 PRINT
- 4250 PRINT"END OF FILE"
- 4260 GOTO 100
- 4300 '* * * * LABELS BY ZIPCODE AND SORT CODE * * * *
- 4305 CLS:PRINT "PRINTING LABELS BY ZIPCODE & SORT KEY":PRINT:PRINT
- 4310 LPRINT CHR$(27)"2"CHR$(18);:'* * SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
- 4315 GET 2,1:INPUT "ENTER SELECTION PARAMETER ";S$
- 4320 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
- 4325 'GOSUB 15000
- 4330 OPEN "I",3,"INDEX2"
- 4335 X%=1
- 4340 IF EOF(3) THEN 4360
- 4345 INPUT #3,G(X%)
- 4350 X%=X%+1
- 4355 GOTO 4340
- 4360 CLOSE 3
- 4365 LPRINT CHR$(27)"2"CHR$(18);:' * * SET 1/6 SPACING, TURN OFF COMPRESSED MODE
- 4370 FOR X=1 TO CVI(AA$)
- 4375 KY%=G(X)
- 4380 GOSUB 13000
- 4385 A=LEN(S$)
- 4390 IF LEFT$(M$,A)=S$ THEN GOSUB 12100
- 4395 NEXT X
- 4396 PRINT
- 4397 PRINT"END OF FILE"
- 4399 GOTO 100
- 4400 '* * * * AALLPHABETIZED SORT KEY LISTING * * * *
- 4405 CLS:PRINT"ALPHABETIZED SORT KEY LISTING":PRINT:PRINT
- 4415 GET 2,1:INPUT "ENTER SORT KEY PARAMETER ";S$
- 4425 'GOSUB 15000
- 4427 GOSUB 14000
- 4430 OPEN "I",3,"INDEX2"
- 4435 X%=1
- 4440 IF EOF(3) THEN 4460
- 4445 INPUT #3,G(X%)
- 4450 X%=X%+1
- 4455 GOTO 4440
- 4460 CLOSE 3
- 4465 LPRINT CHR$(27)"0"CHR$(15);:'* * SET TO 1/8 SPACING, TURN ON COMPRESSED MODE
- 4470 FOR X=1 TO CVI(AA$)
- 4475 KY%=G(X)
- 4480 GOSUB 13000
- 4485 A=LEN(S$)
- 4490 IF LEFT$(M$,A)=S$ THEN GOSUB 12000
- 4495 NEXT X
- 4496 PRINT
- 4497 PRINT"END OF FILE"
- 4499 GOTO 100
- 5000 '* * * * DISPLAY ROUTINES * * * *
- 5005 CLS:PRINT"D I S P L A Y R O U T I N E S":PRINT
- 5010 PRINT" 1. DISPLAY ENTIRE LISTING":PRINT
- 5015 PRINT" 2. DISPLAY INDIVIDUAL ENTRY":PRINT
- 5020 PRINT" 3. RETURN TO MAIN MENU":PRINT
- 5025 BB$=INKEY$:IF BB$="" GOTO 5025
- 5030 ON VAL(BB$) GOTO 5100,5200,100,5000,5000,5000,5000,5000,5000
- 5035 GOTO 5000
- 5100 '* * * * DISPLAY LISTING * * * *
- 5105 CLS:PRINT" M A I L I N G L I S T D I S P L A Y":PRINT
- 5110 A=1
- 5115 FOR KY%=1 TO CVI(AA$)
- 5120 GOSUB 13000
- 5125 PRINT TAB(5)T$
- 5128 PRINT TAB(0)KY%;TAB(5)N$
- 5130 PRINT TAB(5)A$;TAB(40)P$
- 5135 PRINT TAB(5)C$;TAB(40)M$
- 5140 PRINT
- 5145 A=A+1
- 5150 IF A>4 GOTO 5170
- 5155 NEXT KY%
- 5156 PRINT "END OF FILE, HIT ANY KEY TO RETURN TO MENU "
- 5160 L$=INKEY$
- 5162 IF L$="" GOTO 5160
- 5165 GOTO 100
- 5170 PRINT "HIT <SPACE> TO CONTINUE, OR HIT < - > TO RETURN TO":PRINT "THE MAIN MENU, OR HIT <R> FOR PREVIOUS PAGE"
- 5171 L$=INKEY$:IF L$="" GOTO 5171
- 5172 IF L$="R" OR L$="r" GOTO 5500
- 5174 IF L$="-" GOTO 100
- 5175 A=1
- 5185 GOTO 5155
- 5190 L$=INKEY$:IFL$=""GOTO 5190
- 5195 GOTO 100
- 5200 '* * * * SINGLE DISPLAY * * * *
- 5205 CLS:INPUT "ENTER LISTING NUMBER TO BE DISPLAYED ";A
- 5210 IF A>CVI(AA$) THEN 5205
- 5215 KY%=A
- 5220 GOSUB 13000
- 5225 PRINT
- 5228 PRINT TAB(0)A;TAB(5)T$
- 5230 PRINT TAB(5)N$
- 5235 PRINT TAB(5)A$;TAB(40)P$
- 5240 PRINT TAB(5)C$;TAB(49)M$
- 5245 PRINT:PRINT
- 5250 PRINT "ENTER ANOTHER LISTING NUMBER OR ENTER ZERO TO RETURN"
- 5252 PRINT "ENTER <E> FOR EDIT MODE"
- 5255 INPUT " ";L$
- 5257 IF L$="E" GOTO 6310
- 5258 IF L$=CHR$(101) GOTO 6310
- 5259 L=VAL(L$)
- 5260 IF L=0 GOTO 100
- 5265 IF L>CVI(AA$) GOTO 5250
- 5270 A=L
- 5275 GOTO 5215
- 5500 '* * * REVERSE SCROLL ROUTINE * * * *
- 5505 KY%=KY%-8
- 5510 A=1
- 5515 IF KY%<1 THEN KY%=1
- 5520 GOTO 5120
- 6000 '* * * * SEARCH AND EDIT ROUTINES * * * *
- 6005 CLS:PRINT" S E A R C H A N D E D I T R O U T I N E S":PRINT
- 6010 PRINT" 1. SEARCH FOR NAME":PRINT
- 6015 PRINT" 2. SEARCH FOR LISTING NUMBER":PRINT
- 6020 PRINT" 3. EDIT FILE ENTRY":PRINT
- 6025 PRINT" 4. RETURN TO MAIN MENU":PRINT
- 6030 BB$=INKEY$:IF BB$="" GOTO 6030
- 6035 ON VAL(BB$) GOTO 6100,6200,6300,100,6000,6000,6000,6000,6000
- 6040 GOTO 6000
- 6100 '* * * * SEARCH FOR NAME * * * *
- 6105 CLS:PRINT" * * * S E A R C H F O R N A M E * * *":PRINT
- 6110 PRINT:PRINT:INPUT "ENTER NAME TO BE SEARCHED = ";L$
- 6115 GET 2,1:L1=LEN(L$)
- 6120 FOR KY%=1 TO CVI(AA$)
- 6125 GOSUB 13000
- 6130 IF LEFT$(N$,L1)=L$ GOTO 6160
- 6135 NEXT KY%
- 6140 PRINT"END OF FILE"
- 6145 PRINT"PRESS ANY KEY TO CONTINUE"
- 6148 PRINT"PRESS <E> FOR EDIT MODE"
- 6150 BB$=INKEY$:IF BB$="" GOTO 6150
- 6152 IF BB$="E" GOTO 6310
- 6153 IF BB$=CHR$(101) GOTO 6310
- 6155 GOTO 6000
- 6160 PRINT TAB(0)KY%;TAB(5)T$
- 6162 PRINT TAB(5)N$
- 6165 PRINT TAB(5)A$;TAB(40)P$
- 6170 PRINT TAB(5)C$;TAB(49)M$
- 6175 PRINT
- 6180 GOTO 6135
- 6200 '* * * * NUMBER SEARCH ROUTINE * * * *
- 6205 CLS:PRINT" * * * N U M B E R S E A R C H R O U T I N E * * *":PRINT:PRINT
- 6210 INPUT "ENTER LISTING NUMBER TO BE DISPLAYED ";A
- 6215 IF A>CVI(AA$) GOTO 6210
- 6220 KY%=A
- 6225 GOSUB 13000
- 6230 PRINT:PRINT
- 6235 PRINT TAB(0)A;TAB(5)T$
- 6238 PRINT TAB(5)N$
- 6240 PRINT TAB(5)A$;TAB(40)P$
- 6245 PRINT TAB(5)C$;TAB(49)M$
- 6250 PRINT:PRINT
- 6255 PRINT "ENTER ANOTHER LISTING NUMBER OR ENTER ZERO TO RETURN"
- 6256 INPUT "ENTER <E> FOR EDIT MODE ";L$
- 6257 IF L$="E" GOTO 6310
- 6258 L=VAL(L$)
- 6259 IF L$=CHR$(101) GOTO 6310
- 6260 IF L=0 GOTO 6000
- 6265 IF L>CVI(AA$) THEN 6255
- 6270 A=L
- 6275 GOTO 6220
- 6300 '* * * * EDIT ROUTINE * * * *
- 6305 CLS:PRINT" * * * E D I T R O U T I N E * * *":PRINT
- 6310 INPUT "ENTER LISTING NUMBER TO BE EDITED ";A
- 6315 IF A>CVI(AA$) GOTO 6310
- 6320 KY%=A
- 6322 R%=A
- 6325 GOSUB 13000
- 6330 PRINT
- 6335 PRINT TAB(0)"LISTING NUMBER";TAB(20)KY%
- 6340 PRINT TAB(0)"NAME";TAB(20)N$
- 6343 PRINT TAB(0)"TITLE";TAB(20)T$
- 6345 PRINT TAB(0)"ADDRESS";TAB(20)A$
- 6350 PRINT TAB(0)"CITY-STATE-ZIP";TAB(20)C$
- 6355 PRINT TAB(0)"PHONE NUMBER";TAB(20)P$
- 6360 PRINT TAB(0)"SORT KEY";TAB(20)M$
- 6365 PRINT
- 6370 PRINT "DO YOU WISH TO CHANGE THE INFORMATION? Y/N"
- 6375 L$=INKEY$:IF L$="" GOTO 6375
- 6380 IF LEFT$(L$,1)="Y" GOTO 6400
- 6381 IF L$=CHR$(121) THEN 6400
- 6385 GOTO 6000
- 6400 'FILE CORRECTION ROUTINE
- 6405 CLS:PRINT"* * * F I L E C O R R E C T I O N M O D E * * *":PRINT
- 6406 PRINT "IS THE TITLE CORRECT?":PRINT T$
- 6407 L$=INKEY$:IF L$="" GOTO 6407
- 6408 IF LEFT$(L$,1)="N" GOTO 6495
- 6410 PRINT "IS THE NAME CORRECT?":PRINT N$
- 6415 L$=INKEY$:IF L$="" GOTO 6415
- 6420 IF LEFT$(L$,1)="N" GOTO 6500
- 6421 IF L$=CHR$(110) GOTO 6500
- 6425 PRINT "IS THE ADDRESS CORRECT?":PRINT A$
- 6430 L$=INKEY$:IF L$="" GOTO 6430
- 6435 IF LEFT$(L$,1)="N" GOTO 6510
- 6436 IF L$=CHR$(110) GOTO 6510
- 6440 PRINT "IS THE CITY-STATE-ZIP CORRECT?":PRINT C$
- 6445 L$=INKEY$:IF L$="" GOTO 6445
- 6450 IF LEFT$(L$,1)="N" GOTO 6520
- 6451 IF L$=CHR$(110) GOTO 6520
- 6455 PRINT "IS THE PHONE NUMBER CORRECT?":PRINT P$
- 6460 L$=INKEY$:IF L$="" GOTO 6460
- 6465 IF LEFT$(L$,1)="N" GOTO 6530
- 6466 IF L$=CHR$(110) GOTO 6530
- 6470 PRINT "IS THE SORT KEY CORRECT?":PRINT M$
- 6475 L$=INKEY$:IF L$="" GOTO 6475
- 6480 IF LEFT$(L$,1)="N" GOTO 6540
- 6481 IF L$=CHR$(110) GOTO 6540
- 6490 GOTO 6000
- 6495 LINE INPUT "TITLE = ";T1$:LSET T$=T1$:PUT 1,PR%
- 6496 GOTO 6410
- 6500 LINE INPUT "NAME = ";N1$:LSET N$=N1$:PUT 1,PR%
- 6505 GOTO 6425
- 6510 LINE INPUT "ADDRESS = ";A1$:LSET A$=A1$:PUT 1,PR%
- 6515 GOTO 6440
- 6520 LINE INPUT "CITY-STATE-ZIP = ";C1$:LSET C$=C1$:PUT 1,PR%
- 6525 GOTO 6455
- 6530 LINE INPUT "PHONE NUMBER = ";P1$:LSET P$=P1$:PUT 1,PR%
- 6535 GOTO 6470
- 6540 LINE INPUT "SORT KEY = ";M1$:LSET M$=M1$:PUT 1,PR%
- 6545 GET 2,1:KY%=A
- 6550 GOSUB 13000
- 6555 PUT 1,PR%:GOTO 6000
- 7000 '* * * * DELETE ENTRY ROUTINE * * * *
- 7005 CLS:PRINT"* * * * D E L E T E E N T R Y R O U T I N E * * * *":PRINT
- 7010 INPUT "ENTER FILE NUMBER TO BE DELETED ";A
- 7015 KY%=CVI(AA$)
- 7020 GOSUB 13000
- 7025 T1$=T$:N1$=N$:A1$=A$:C1$=C$:P1$=P$:M1$=M$
- 7030 KY%=A
- 7035 GOSUB 13000
- 7040 PRINT TAB(0)KY%;TAB(5)T$
- 7042 PRINT TAB(5)N$
- 7045 PRINT TAB(5)A$;TAB(40)P$
- 7050 PRINT TAB(5)C$;TAB(49)M$
- 7055 PRINT
- 7060 INPUT "ARE YOU SURE (Y/N)";L$
- 7065 IF LEFT$(L$,1)="Y" GOTO 7100
- 7066 IF L$=CHR$(121) GOTO 7100
- 7070 GOTO 100
- 7100 LSET T$=T1$:LSET N$=N1$:LSET A$=A1$:LSET C$=C1$:RSET P$=P1$:LSET M$=M1$
- 7105 PUT 1,PR%
- 7110 KY%=(CVI(AA$)-1)
- 7120 LSET AA$=MKI$(KY%)
- 7130 PUT 2,1
- 7140 GOTO 100
- 8000 '* * * * START NEW DATA FILE * * * *
- 8002 CLS:PRINT "DO YOU WISH TO ERASE ALL PREVIOUS ENTRIES"
- 8005 INPUT "AND START FROM SCRATCH (Y/N)";L$
- 8010 IF LEFT$(L$,1)="Y" GOTO 8020
- 8011 IF L$=CHR$(121) GOTO 8020
- 8015 GOTO 100
- 8020 CLOSE
- 8022 KILL "DATA":KILL "POINT1"
- 8025 OPEN "R",1,"DATA":OPEN "R",2,"POINT1"
- 8030 FIELD 2,4 AS AA$
- 8035 LSET AA$=MKI$(0):PUT 2,1
- 8040 GOTO 100
- 9000 '* * * * SORT ROUTINE * * * *
- 9005 CLS:PRINT"* * * * S O R T R O U T I N E * * * *":PRINT
- 9010 PRINT
- 9015 PRINT"STARTING ALPHABETIC SORT BY NAME"
- 9020 GET 2,1:KY%=CVI(AA$)
- 9022 IF Z>0 GOTO 9030
- 9025 DIM U$(KY%+20),U(KY%+20),V$(KY%+20),V(KY%+20),N(KY%+20),W$(KY%+20),W(KY%+20)
- 9026 Z=1:'SWITCH TO PREVENT RE-DIMENSIONING AN ARRAY
- 9030 PRINT"READING DATA FILE"
- 9035 Y=CVI(AA$)
- 9040 FOR KY%=1 TO Y
- 9045 GOSUB 13000
- 9048 U$(KY%)=N$
- 9050 GOSUB 17000
- 9055 W$(KY%)=W$:U(KY%)=KY%:W(KY%)=KY%
- 9060 NEXT KY%
- 9065 PRINT"STARTING SORT BY NAME"
- 9067 PRINT"PLEASE STAND BY"
- 9070 L=INT(Y/2)+1
- 9075 N1=Y
- 9080 IF L=1 THEN 9100
- 9085 L=L-1
- 9090 V$=U$(L):V=U(L)
- 9095 GOTO 9120
- 9100 V$=U$(N1):V=U(N1)
- 9105 U$(N1)=U$(1):U(N1)=U(1)
- 9110 N1=N1-1
- 9115 IF N1=1 GOTO 9180
- 9120 J=L
- 9125 I=J
- 9130 J=2*J
- 9135 IF J=N1 GOTO 9155
- 9140 IF J>N1 GOTO 9170
- 9145 IF U$(J)>=U$(J+1) GOTO 9155
- 9150 J=J+1
- 9155 IF V$>=U$(J) GOTO 9170
- 9160 U$(I)=U$(J):U(I)=U(J)
- 9165 GOTO 9125
- 9170 U$(I)=V$:U(I)=V
- 9175 GOTO 9080
- 9180 U$(1)=V$:U(1)=V
- 9185 PRINT"ALPHA SORT COMPLETE, FILING INDEX"
- 9190 OPEN "O",3,"INDEX1"
- 9195 FOR X=1 TO CVI(AA$)
- 9200 PRINT #3,U(X)
- 9205 NEXT X
- 9210 CLOSE 3
- 9215 PRINT"ALPHA INDEX STORED ON DISK, STARTING ZIP CODE SORT"
- 9218 L=INT(Y/2)+1
- 9220 N1=Y
- 9225 IF L=1 GOTO 9245
- 9230 L=L-1
- 9235 V$=W$(L):V=W(L)
- 9240 GOTO 9265
- 9245 V$=W$(N1):V=W(N1)
- 9250 W$(N1)=W$(1):W(N1)=W(1)
- 9255 N1=N1-1
- 9260 IF N1=1 GOTO 9325
- 9265 J=L
- 9270 I=J
- 9275 J=2*J
- 9280 IF J=N1 GOTO 9300
- 9285 IF J>N1 GOTO 9315
- 9290 IF W$(J)>=W$(J+1) GOTO 9300
- 9295 J=J+1
- 9300 IF V$>=W$(J) GOTO 9315
- 9305 W$(I)=W$(J):W(I)=W(J)
- 9310 GOTO 9270
- 9315 W$(I)=V$:W(I)=V
- 9320 GOTO 9225
- 9325 W$(1)=V$:W(1)=V
- 9330 PRINT"ZIPCODE SORT COMPLETE
- 9335 OPEN "O",3,"INDEX2"
- 9340 FOR X=1 TO CVI(AA$)
- 9345 PRINT #3,W(X)
- 9350 NEXT X
- 9355 CLOSE 3
- 9360 PRINT"ZIPCODE INDEX STORED ON DISK
- 9365 FOR X=1 TO 500:NEXT X
- 9370 GOTO 100
- 12000 '* * * * PRINTER FORMATS * * * *
- 12005 ' LISTING FORMAT
- 12010 LPRINT TAB(0)KY%;:'* * CHR$(137) IS HORIZ. TAB FOR PRINTER
- 12015 LPRINT TAB(8)N$;
- 12020 LPRINT TAB(37)A$;
- 12025 LPRINT TAB(67)C$;
- 12030 LPRINT TAB(96)P$;
- 12035 LPRINT TAB(120)M$
- 12040 RETURN
- 12100 ' LABEL FORMAT
- 12103 LPRINT T$
- 12104 GOSUB 19000
- 12105 LPRINT N3$;N2$
- 12110 LPRINT A$
- 12115 LPRINT C$
- 12120 LPRINT:LPRINT
- 12125 RETURN
- 13000 '*** FILE FORMAT ***
- 13005 PR%=KY%:FIELD 1,25 AS T$,25 AS N$,25 AS A$,25 AS C$,15 AS P$,10 AS M$:GET 1,PR%
- 13010 RETURN
- 14000 ' * * * H E A D E R S E T U P * * *
- 14002 'GOSUB 15000
- 14003 LPRINT CHR$(18);
- 14005 LPRINT CHR$(14);" * MAILING LIST MANAGER * ";CHR$(20):'SET EXPANDED MODE, TURN IT OFF
- 14010 LPRINT CHR$(27)"0"CHR$(15);:'SET 1/8 SPACING, TURN ON COMPRESSED MODE
- 14012 LPRINT STRING$(131,126)
- 14013 '* * SET UP HORIZONTAL TAB POSITIONS * *
- 14015 LPRINT CHR$(27)"D";CHR$(129);CHR$(134);CHR$(164);CHR$(194);CHR$(224);CHR$(242);CHR$(128);
- 14020 LPRINT CHR$(137)"ITEM";
- 14025 LPRINT CHR$(137)"NAME";
- 14030 LPRINT CHR$(137)"ADDRESS";
- 14035 LPRINT CHR$(137)"CITY-STATE-ZIP";
- 14040 LPRINT CHR$(137)" PHONE";
- 14045 LPRINT CHR$(137)"SORT KEY"
- 14048 LPRINT STRING$(131,126):PRINT
- 14050 RETURN
- 15000 '* * * IS PRINTER READY??? * * *
- 15005 ZZ=PEEK(14312)
- 15010 IF ZZ=63 THEN RETURN
- 15015 PRINT "* * PRINTER NOT READY * *"
- 15020 FOR G=1 TO 200:NEXT
- 15025 PRINT " "
- 15030 GOTO 15005
- 17000 '*** FIND ZIPCODE ROUTINE ***
- 17010 FOR Q=1 TO 25
- 17020 IF MID$(C$,Q,1)="," GOTO 17040
- 17030 NEXT Q
- 17040 Q=Q+5
- 17050 W$=MID$(C$,Q,5)
- 17060 RETURN
- 19000 '* * * NAME DECODE * * *
- 19005 FOR I=1 TO 25
- 19010 I$(I)=MID$(N$,I,1)
- 19015 NEXT I
- 19020 FOR I=1 TO 27
- 19025 IF I$(I)="," THEN J=I
- 19030 IF I$(I)=" " AND I$(I+1)=" " THEN K=I
- 19035 IF I$(I)=" " AND I$(I+1)=" " GOTO 19100
- 19040 NEXT I
- 19045 FOR X =1 TO 25
- 19050 PRINT I$(X);
- 19052 PRINT ASC(I$(X));
- 19055 NEXT X
- 19060 PRINT J, K
- 19065 END
- 19100 N2$=LEFT$(N$,J-1)
- 19110 N3$=MID$(N$,J+2,K-(J+1))
- 19115 RETURN